#include "objetos.h"

/*------------------------------------------------------------------------------
	Constructor
------------------------------------------------------------------------------*/
CObjetos::CObjetos()
{
}

/*------------------------------------------------------------------------------
	Destructor
------------------------------------------------------------------------------*/
CObjetos::~CObjetos()
{
}

/*------------------------------------------------------------------------------
	Frees memory
------------------------------------------------------------------------------*/
void CObjetos::Liberar()
{
}

/*------------------------------------------------------------------------------
	Initialize class
------------------------------------------------------------------------------*/
Bool CObjetos::Iniciar(CRecursos *pRecursos)
{
	if(!pRecursos)
		return FALSE;
		
	m_pRecursos=pRecursos;
	return TRUE;
}

/*------------------------------------------------------------------------------
	Draws entities
------------------------------------------------------------------------------*/
void CObjetos::Dibujar()
{
	int i;
	Bool finbucle;
	/*--------------------------------
		DIBUJAMOS LISTA PERSONAJES
	---------------------------------*/
	CEnemigo *e;
	m_ListaEnemigos.ResetearApuntador();
  	//num_malos=m_ListaEnemigos.getNumElem();
  	finbucle=FALSE;
  					
  	while(!finbucle)
  	{
  		e=m_ListaEnemigos.Consultar();
  				
  		if(!e)
  			finbucle=TRUE;
  		else
			if(!e->getVivo())
  			{
  				CParticulas *pt;
				pt=new CParticulas();						
				pt->setColor(e->getColorR(),e->getColorG(),e->getColorB());
				
	  		  //pt->Iniciar(100,PART_EXPLOSION,0.75,0.03,e->getX(),e->getY(),0);
				pt->Iniciar(50, PART_EXPLOSION,0.85,0,e->getX(),e->getY(),Z_0);
				
				pt->setTextura(m_pRecursos->getTexturaParticula(0));						
				pt->setEscala(5);
				AniadirParticula(pt);
				pt=NULL;
						
  				e=NULL;  						
  				m_ListaEnemigos.Borrar();
  			}
  			else
  			{
  				if(e->DentroCamara())
					e->Dibujar();
	 					 	
				m_ListaEnemigos.Siguiente();  
  			}
  		}
  		e=NULL;
  	/*******************************
  		DIBUJAMOS LISTA DISPAROS PJ
  	********************************/
  	CDisparo *d;
  	m_ListaDisparos.ResetearApuntador();  			
  	finbucle=FALSE;  			
  	while(!finbucle)
  	{  			
  		d=m_ListaDisparos.Consultar(); 			
  		
  		if(!d)
  			finbucle=TRUE; 
  		else
  		{
			if(!d->getVivo())
  			{  		
  				CParticulas *pt;
				pt=new CParticulas();
				pt->setColor(d->getColorR(),d->getColorG(),d->getColorB());
						
				pt->Iniciar(50,PART_EXPLOSION,1,0,d->getX(),d->getY(),Z_0);
						
				pt->setTextura(m_pRecursos->getTexturaParticula(0));						
				pt->setEscala((frand()/4)+0.125);
				pt->setAceleracionX(-(d->getVelocX()/3));
				pt->setGravedad(-(d->getVelocX()));
				AniadirParticula(pt);
				pt=NULL;
						
  				d=NULL;
  				m_ListaDisparos.Borrar();
  			}
  			else
  			{  			
  				d->Dibujar();
				//**************************
				CEnemigo *e;
				Bool fb;
	  			m_ListaEnemigos.ResetearApuntador();
  				fb=FALSE;  					
  				while(!fb)
  				{
  					e=m_ListaEnemigos.Consultar();
  						
  					if(!e)
  						fb=TRUE;
  					else
  					{  						
						if(d->Colisiona(e))
						{		  			  						
							d->setVivo(FALSE);	
							e->setVivo(FALSE);	
							fb=TRUE;
						}
		  						
						m_ListaEnemigos.Siguiente();
				 	}
							    							
  				}
  				e=NULL;						
  				//****************************
						
				m_ListaDisparos.Siguiente();
  			}	
  			d=NULL;	
  		} 	
  	}		
  	d=NULL;
  			
  	/*******************************
  		DIBUJAMOS LISTA DISPAROS ENEM
  	********************************/
  	m_ListaDisparosEnemigos.ResetearApuntador();  			
  	finbucle=FALSE;  			
  	while(!finbucle)
  	{  			
  		d=m_ListaDisparosEnemigos.Consultar();
  				
  		if(!d)
  			finbucle=TRUE; 
  		else
			if(!d->getVivo())
  			{  			
  				d=NULL;
  				m_ListaDisparosEnemigos.Borrar();
  			}
  			else
  			{  			
  				d->Dibujar();
				m_ListaDisparosEnemigos.Siguiente();  						
  			}	
  		d=NULL;	
  	} 			
  	d=NULL;
  			
  	/*******************************
  		DIBUJAMOS LISTA PARTICULAS
  	********************************/
  	for (i=2;i>=0;i--)
  	{
	  	CParticulas *pa;
  		m_ListaParticulas[i].ResetearApuntador();  			
	  	finbucle=FALSE;  		
  		
	  	while(!finbucle)
  		{  			
	  		pa=m_ListaParticulas[i].Consultar();  				
  			if(!pa)
				finbucle=TRUE; 
			else
			{
				if(!pa->getVivo())
				{  	  						
					pa=NULL;
					m_ListaParticulas[i].Borrar();
				}
				else
				{  	
					pa->Dibujar();
					m_ListaParticulas[i].Siguiente();  						
				}	
			}
			pa=NULL;	
		} 			
		pa=NULL;  		
	}
}
